imap_client->parser =
imap_parser_create(imap_client->common.input,
imap_client->common.output,
- IMAP_LOGIN_MAX_LINE_LENGTH);
+ IMAP_LOGIN_MAX_LINE_LENGTH, NULL);
struct settings_instance *set_instance = settings_instance_find(client->event);
if (set_instance == NULL) {
set_instance = settings_instance_new(
imap_client->parser =
imap_parser_create(imap_client->common.input,
imap_client->common.output,
- IMAP_LOGIN_MAX_LINE_LENGTH);
+ IMAP_LOGIN_MAX_LINE_LENGTH, NULL);
/* CRLF is lost from buffer when streams are reopened. */
imap_client->skip_line = FALSE;
id->params->pool = param_pool;
id->parser = imap_parser_create(client->common.input,
client->common.output,
- IMAP_LOGIN_MAX_LINE_LENGTH);
+ IMAP_LOGIN_MAX_LINE_LENGTH,
+ NULL);
+ id->log_reply = str_new(default_pool, 64);
if (client->set->imap_literal_minus)
imap_parser_enable_literal_minus(id->parser);
parser_flags = IMAP_PARSE_FLAG_STOP_AT_LIST;
o_stream_unset_flush_callback(client->output);
ctx->save_parser = imap_parser_create(client->input, client->output,
- client->set->imap_max_line_length);
+ client->set->imap_max_line_length,
+ NULL);
if (client->set->imap_literal_minus)
imap_parser_enable_literal_minus(ctx->save_parser);
asynchronously the same way as APPEND does. */
client->input_lock = cmd;
ctx->parser = imap_parser_create(client->input, client->output,
- client->set->imap_max_line_length);
+ client->set->imap_max_line_length,
+ NULL);
if (client->set->imap_literal_minus)
imap_parser_enable_literal_minus(ctx->parser);
o_stream_unset_flush_callback(client->output);
} else {
cmd->parser =
imap_parser_create(client->input, client->output,
- client->set->imap_max_line_length);
+ client->set->imap_max_line_length,
+ NULL);
if (client->set->imap_literal_minus)
imap_parser_enable_literal_minus(cmd->parser);
}
o_stream_set_flush_callback(conn->output, imapc_connection_connected,
conn);
conn->parser = imap_parser_create(conn->input, NULL,
- conn->client->set->imapc_max_line_length);
+ conn->client->set->imapc_max_line_length,
+ NULL);
conn->to = timeout_add(conn->client->set->imapc_connection_timeout_interval_msecs,
imapc_connection_timeout, conn);
conn->to_output = timeout_add(conn->client->set->imapc_max_idle_time_secs*1000,
int result = 0;
input = i_stream_create_from_data(header_list, strlen(header_list));
- parser = imap_parser_create(input, NULL, SIZE_MAX);
+ parser = imap_parser_create(input, NULL, SIZE_MAX, NULL);
if (imap_parser_finish_line(parser, 0, 0, &args) > 0 &&
imap_arg_get_list_full(args, &hdr_list, &list_count) &&
input = i_stream_create_from_data(bodystructure, strlen(bodystructure));
(void)i_stream_read(input);
- parser = imap_parser_create(input, NULL, SIZE_MAX);
+ parser = imap_parser_create(input, NULL, SIZE_MAX, NULL);
ret = imap_parser_finish_line(parser, 0,
IMAP_PARSE_FLAG_LITERAL_TYPE, &args);
if (ret < 0) {
input = i_stream_create_from_data(bodystructure, strlen(bodystructure));
(void)i_stream_read(input);
- parser = imap_parser_create(input, NULL, SIZE_MAX);
+ parser = imap_parser_create(input, NULL, SIZE_MAX, NULL);
ret = imap_parser_finish_line(parser, 0, IMAP_PARSE_FLAG_NO_UNESCAPE |
IMAP_PARSE_FLAG_LITERAL_TYPE, &args);
if (ret < 0) {
input = i_stream_create_from_data(envelope, strlen(envelope));
(void)i_stream_read(input);
- parser = imap_parser_create(input, NULL, SIZE_MAX);
+ parser = imap_parser_create(input, NULL, SIZE_MAX, NULL);
ret = imap_parser_finish_line(parser, 0,
IMAP_PARSE_FLAG_LITERAL_TYPE, &args);
if (ret < 0) {
struct imap_parser *
imap_parser_create(struct istream *input, struct ostream *output,
- size_t max_line_size)
+ size_t max_line_size,
+ const struct imap_parser_params *params ATTR_UNUSED)
{
struct imap_parser *parser;
IMAP_PARSE_ERROR_LITERAL_TOO_BIG
};
+struct imap_parser_params {
+};
+
struct imap_parser;
/* Create new IMAP argument parser. output is used for sending command
2 * max_line_size. */
struct imap_parser *
imap_parser_create(struct istream *input, struct ostream *output,
- size_t max_line_size) ATTR_NULL(2);
+ size_t max_line_size,
+ const struct imap_parser_params *params);
void imap_parser_ref(struct imap_parser *parser);
void imap_parser_unref(struct imap_parser **parser);
test_begin("imap parser crlf handling");
input = test_istream_create(test_input);
- parser = imap_parser_create(input, NULL, 1024);
+ parser = imap_parser_create(input, NULL, 1024, NULL);
/* must return -2 until LF is read */
for (i = 0; test_input[i] != '\n'; i++) {
test_begin("imap parser partial list");
input = test_istream_create(test_input);
- parser = imap_parser_create(input, NULL, 1024);
+ parser = imap_parser_create(input, NULL, 1024, NULL);
(void)i_stream_read(input);
test_assert(imap_parser_read_args(parser, 0,
if (tests[i].type != COMMAND) {
input = test_istream_create(tests[i].input);
test_assert(i_stream_read(input) > 0);
- parser = imap_parser_create(input, NULL, 1024);
+ parser = imap_parser_create(input, NULL, 1024, NULL);
ret = imap_parser_read_tag(parser, &atom);
test_assert_idx(ret == tests[i].ret, i);
test_assert_idx(ret <= 0 || strcmp(tests[i].tag, atom) == 0, i);
if (tests[i].type != TAG) {
input = test_istream_create(tests[i].input);
test_assert(i_stream_read(input) > 0);
- parser = imap_parser_create(input, NULL, 1024);
+ parser = imap_parser_create(input, NULL, 1024, NULL);
ret = imap_parser_read_command_name(parser, &atom);
test_assert_idx(ret == tests[i].ret, i);
test_assert_idx(ret <= 0 || strcmp(tests[i].tag, atom) == 0, i);
input = i_stream_create_from_data(str_data(rule), str_len(rule));
(void)i_stream_read(input);
- imap_parser = imap_parser_create(input, NULL, SIZE_MAX);
+ imap_parser = imap_parser_create(input, NULL, SIZE_MAX, NULL);
ret = imap_parser_finish_line(imap_parser, 0, 0, &args);
if (ret < 0) {
sargs = NULL;